/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import entidades.HabitacionImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import persistencia.agente.HabitacionAgente;

/**
 *
 * @author mariodante
 */
public class IntermediarioHabitacion extends IntermediarioPersistencia {
               
    @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
        String sql = "SELECT * FROM HABITACION WHERE " + criterio.convertirAString();
        return sql;
    }

    @Override
    protected String generarSQLBuscarTodo() {
        return "SELECT * FROM HABITACION";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
         return "SELECT * FROM HABITACION WHERE oidHabitacion= '" + oid +"'";
    }

    @Override
    protected String generarSQLGuardar(Object objeto) {
        HabitacionAgente ob = (HabitacionAgente)objeto;
        
        String sql = "INSERT INTO HABITACION (oidHabitacion , disponible , nroHabitacion , sector , tipoHabitacion)"
                + " VALUES ("
                + "'" +ob.getOid()
                //+ generarOid()
                //+ ob.getOid() == null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()
                + "', " + convertirBooleanAInt(ob.isDisponible())
                + ", " + ob.getNroHabitacion()
                + ", '" + ob.getSector()
                + "', '" + ob.getTipoHabitacion()
                + "')";
        System.out.println("SQL Guardar: " + sql);
        return sql;
    }
 
    @Override
    protected String generarSQLActualizar(Object objeto) {
        HabitacionAgente ob = (HabitacionAgente)objeto;
        String sql = "UPDATE HABITACION SET "
                + "disponible = " + convertirBooleanAInt(ob.isDisponible())
                + ", nroHabitacion = " + ob.getNroHabitacion()
                + ", sector = '" + ob.getSector()
                + "', tipoHabitacion = '" + ob.getTipoHabitacion()
                + "' WHERE oidHabitacion = '" + ob.getOid() + "'";
        System.out.println("SQL Actualizar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
        return "DELETE FROM HABITACION WHERE oidHabitacion = '" + ((Agente) objeto).getOid() + "'";
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {
        
        List<Object> resultado = new ArrayList<Object>();
        HabitacionImpl implementacion;
        HabitacionAgente agente;
        try {
            while (result.next()) {
                implementacion = new HabitacionImpl();
                agente = new HabitacionAgente();
                agente.setHabitacionImpl(implementacion);

                agente.setOid(result.getString("oidHabitacion"));
                agente.setDisponible(result.getBoolean("disponible"));
                agente.setNroHabitacion(result.getInt("nroHabitacion"));
                agente.setSector(result.getString("sector"));
                agente.setTipoHabitacion(result.getString("tipoHabitacion"));
                
                resultado.add(agente);
            }

        } catch (Exception e) {
            System.out.println("Error en materialización: " + e.toString());
        }

        return resultado;
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
}
